﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MsForgeReboot.Framework.Interfaces
{
    using System.IO;

    using MsForgeReboot.Framework.ViewModels;

    using PagedList;

    public interface IMediaGalleryService
    {
        /// <summary>
        /// Gets the paged list.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="pageSize">Size of the page.</param>
        /// <returns></returns>
        IPagedList<FileInfo> GetPagedList(int page, int pageSize);

        /// <summary>
        /// Deletes the specified file name.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        void Delete(string fileName);

        /// <summary>
        /// Deletes the specified file name.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="subFolder">The sub folder.</param>
        void Delete(string fileName, string subFolder);

        /// <summary>
        /// Saves the specified image to the Media Gallery.
        /// </summary>
        /// <param name="model">The model.</param>
        void Save(ImageViewModel model);

        /// <summary>
        /// Saves the specified image to the Media Gallery.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="subFolder">The sub folder.</param>
        void Save(ImageViewModel model, string subFolder);

        /// <summary>
        /// Gets the list of all files in the gallery.
        /// </summary>
        /// <returns></returns>
        IEnumerable<FileInfo> GetList();
    }
}
